Data specifics

  • The Longitudinal Employer Household Dynamics (LEHD) program at the US Census Bureau releases the Origin Destination Employment Statistis (LODES) datasets annually based on employer-employee insurance records.
  • This data file uses data from the Origin-Destination datafile from LEHD. In the origin datafile, census blocks are listed in pairs based on where workers live and work. The original datafile has been aggregated to the county level to allow users to see where Charlottesville area residents are commuting most often. That is, of the Charlottesville area residents who work outside of the Charlottesville region, to which counties do they commute most often?
  • Data presented here are from 2018 and spatial units are based on the 2010 census. As of July of 2021, 2018 is the most recent year for which data are available. The earliest year for which data are available is 2002.
  • Some limitations: jobs counts do not include those working in defense-related industries; the data are prone to imperfect geocoding for certain jobs (jobs for companies with multiple branches are often all coded in the same location); although there are datasets from 2002-2018, these data are not suitable for longitudinal analysis; and student-workers are unlikely to be represented in these data because their jobs are not typically covered by state unemployment insurance.

Where do Charlottesville area residents commute most often?

outsideworkers <- cvl_lodes %>% 
  filter(w_county %in% cvlfips == F)

Commuter distributions

Below I show the percentile calculations for Virginia counties based on the number of Charlottesville area residents who are employed in that county. These calculations do not include the number of Charlottesville area residents who are employed within the Charlottesville region. For example, the number of people who live in Albemarle County and commute to Charlottesville City are not reflected in this calculations. The bar graphs show the most common and least common work-destination counties for Charlottesville area residents who work outside of the Charlottesville area.

quantile(na.omit(outsideworkers$commuters), probs = seq(0, 1, by= 0.05))
##      0%      5%     10%     15%     20%     25%     30%     35%     40%     45% 
##    2.00    3.25    5.00   13.50   17.00   24.00   26.50   31.00   37.00   45.25 
##     50%     55%     60%     65%     70%     75%     80%     85%     90%     95% 
##   63.50   68.25  103.00  126.75  152.50  231.75  344.00  487.75  766.50 1167.50 
##    100% 
## 3565.00

Bottom 25th percentile (the least common work-destinations for Charlottesville area residents)

# Counties that are in the bottom 25th percentile in terms of number of Charlottesville region residents commuters. 
outsideworkers25 <- outsideworkers[which(outsideworkers$commuters <= quantile(na.omit(outsideworkers$commuters), probs = 0.25)),]
ggplot(outsideworkers25, aes(x = NAME, y = commuters))+
  geom_bar(stat = 'identity', width = 0.5) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(x = "County", y = "Charlottesville area resident commuters")

Top 75th percentile (the most common work-destinations for Charlottesville area residents who work outside the Charlottesville region)

# Counties that are in the top 75th percentile in terms of number of Charlottesville region residents commuters. 
outsideworkers75 <- outsideworkers[which(outsideworkers$commuters >= quantile(na.omit(outsideworkers$commuters), probs = 0.75)),]
ggplot(outsideworkers75, aes(x = NAME, y = commuters))+
  geom_bar(stat = 'identity', width = 0.5) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(x = "County", y = "Charlottesville area resident commuters")

Mapping commuting patterns

The map offers another way to visualize where Charlottesville area residents who work outside the Charlottesville region are commuting most often. The counts of Charlottesville area residents who commute to work within the Charlottesville region are excluded from the legend so as to limit the range and allow for easier discrimination between the surrounding counties, but the number of commuters to each of the localities in the Charlottesville region is available by clicking on the locality.

cvllodesmap <- cvl_lodes
cvllodesmap$commuters <- ifelse(cvllodesmap$w_county %in% cvlfips, NA, cvllodesmap$commuters)
pal <- colorNumeric("plasma", reverse = TRUE, na.color = "lightgray", domain = cvllodesmap$commuters)
leaflet(cvl_lodes) %>% 
  addProviderTiles("CartoDB.Positron") %>% 
  addPolygons(data = cvllodesmap,
              fillColor = ~pal(commuters),
              weight = 1,
              opacity = 1,
              color = "white", 
              fillOpacity = 0.6,
              highlight = highlightOptions(
                weight = 1, fillOpacity = 0.8, bringToFront = T
              ),
              popup = paste0("County: ", cvllodesmap$NAME, "<br>",
                             "Number of commuters: ", cvl_lodes$commuters)) %>% 
  addLegend("bottomright", pal = pal, values = cvllodesmap$commuters, 
            title = "Number of Charlottesville <br> region commuters", opacity = 0.7)

County lists

Below are lists of counties that employ more or less than 25 Charlottesville area residents.

  • Counties that employ 25 or more Charlottesville region residents
(sort(outsideworkers$NAME[which(outsideworkers$commuters >= 25)]))
##  [1] "Accomack"         "Alexandria"       "Alleghany"        "Amelia"          
##  [5] "Amherst"          "Appomattox"       "Arlington"        "Augusta"         
##  [9] "Bath"             "Bedford"          "Botetourt"        "Buckingham"      
## [13] "Buena Vista"      "Campbell"         "Caroline"         "Carroll"         
## [17] "Charlotte"        "Chesapeake"       "Chesterfield"     "Colonial Heights"
## [21] "Covington"        "Culpeper"         "Cumberland"       "Danville"        
## [25] "Dinwiddie"        "Essex"            "Fairfax"          "Fairfax"         
## [29] "Falls Church"     "Fauquier"         "Franklin"         "Frederick"       
## [33] "Fredericksburg"   "Gloucester"       "Goochland"        "Halifax"         
## [37] "Hampton"          "Hanover"          "Harrisonburg"     "Henrico"         
## [41] "Henry"            "James City"       "King George"      "King William"    
## [45] "Lancaster"        "Lexington"        "Loudoun"          "Lynchburg"       
## [49] "Madison"          "Manassas"         "Manassas Park"    "Martinsville"    
## [53] "Mecklenburg"      "Montgomery"       "New Kent"         "Newport News"    
## [57] "Norfolk"          "Nottoway"         "Orange"           "Page"            
## [61] "Petersburg"       "Pittsylvania"     "Portsmouth"       "Powhatan"        
## [65] "Prince Edward"    "Prince George"    "Prince William"   "Pulaski"         
## [69] "Radford"          "Rappahannock"     "Richmond"         "Richmond"        
## [73] "Roanoke"          "Roanoke"          "Rockbridge"       "Rockingham"      
## [77] "Salem"            "Shenandoah"       "Spotsylvania"     "Stafford"        
## [81] "Staunton"         "Suffolk"          "Tazewell"         "Virginia Beach"  
## [85] "Warren"           "Washington"       "Waynesboro"       "Williamsburg"    
## [89] "Winchester"       "Wise"             "Wythe"            "York"
  • Counties that employ less than 25 Charlottesville region residents
(sort(outsideworkers$NAME[which(outsideworkers$commuters < 25)]))
##  [1] "Bland"          "Bristol"        "Brunswick"      "Buchanan"      
##  [5] "Charles City"   "Clarke"         "Craig"          "Dickenson"     
##  [9] "Emporia"        "Floyd"          "Franklin"       "Galax"         
## [13] "Giles"          "Grayson"        "Greensville"    "Highland"      
## [17] "Hopewell"       "Isle of Wight"  "Lee"            "Lunenburg"     
## [21] "Mathews"        "Middlesex"      "Northampton"    "Northumberland"
## [25] "Norton"         "Patrick"        "Poquoson"       "Russell"       
## [29] "Scott"          "Smyth"          "Southampton"    "Surry"         
## [33] "Sussex"         "Westmoreland"